package face;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SpringLayout;

import model.Professor;
import repositorio.ProfessorRepositorio;
public class FormProfessor {

	JPanel panel;
	
	JButton	btAnterior;
	JButton	btProximo;
	JButton	btExcluir;
	JButton	btSalvar;
	
	JTextField nome;
	JTextField matricula;
	JTextField titulacao;
	
	Professor item;
	List<Professor> lista;
	int index;
	ProfessorRepositorio repositorio;
	
	public FormProfessor(){
		repositorio = new ProfessorRepositorio();
		lista = repositorio.buscarTodos();
		index = 0;
		item = lista.get(index);
	}
	
	public JComponent card()
	{	
		panel = new JPanel(false);
		panel.setLayout(new GridLayout(2, 1));
		
		panel.add(toolbar());
		panel.add(form());
		setValueForm();
		
		return panel;
	}
	
	private JComponent form(){
		JPanel form = new JPanel(new SpringLayout());
		
		JLabel lblNome = new JLabel("Nome", JLabel.TRAILING);
		nome = new JTextField(10);
        lblNome.setLabelFor(nome);
        
		JLabel lblMatricula = new JLabel("Matrícula", JLabel.TRAILING);
		matricula = new JTextField(10);
        lblMatricula.setLabelFor(matricula);
        
        JLabel lblTitulacao = new JLabel("Titulação", JLabel.TRAILING);
		titulacao = new JTextField(10);
		lblTitulacao.setLabelFor(titulacao);
 
        form.add(lblNome);
        form.add(nome);
        form.add(lblMatricula);
        form.add(matricula);
        form.add(lblTitulacao);
        form.add(titulacao);
		
		SpringUtilities.makeCompactGrid(form,
                3, 2, //rows, cols
                6, 6,        //initX, initY
                6, 6);       //xPad, yPad 
		
		return form;
	}
	
	private JComponent toolbar(){
		JPanel toolbar = new JPanel(false);
    	toolbar.setLayout(new GridLayout(1, 4, 2, 2));
    	
    	JButton btAnterior = new JButton("Anterior");
    	btAnterior.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						if((index-1) < 0 ) index = lista.size()-1;
						else index--;
						item = lista.get(index);
		        		setValueForm();
					}
				}
		);
    	toolbar.add(btAnterior);
        
    	JButton btProximo = new JButton("Próximo");
    	btProximo.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						if((index+1) > lista.size()-1) index = 0;
						else index++;
						item = lista.get(index);
		        		setValueForm();
					}
				}
		);
    	toolbar.add(btProximo);
        
    	JButton btExcluir = new JButton("Excluir");
    	btExcluir.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						repositorio.remover(item);
						lista.remove(index);
						if(index > lista.size()-1) index = 0;
						item = lista.get(index);
						setValueForm();
					}
				}
		);
    	toolbar.add(btExcluir);
        
    	JButton btSalvar = new JButton("Salvar");
    	btSalvar.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) {
						item.setNome(nome.getText());
						item.setNrMatricula(Integer.parseInt(matricula.getText()));
						item.setTitulacao(titulacao.getText());
						repositorio.atualizar(item);
						setValueForm();
					}
				}
		);
    	toolbar.add(btSalvar);

    	return toolbar;
	}
	
	private void setValueForm(){
		nome.setText(item.getNome());
		matricula.setText(String.valueOf(item.getNrMatricula()));
		titulacao.setText(item.getTitulacao());
	}
	
}
